#include <stdio.h>
#define MAXS 20

void zip( char *p );

int main()
{
	char s[MAXS] = "MMMMisssssissippiii";				//记下重复连续出现的位置和数量
	zip(s);						//替换
	printf("%s\n", s);
	
	return 0;
}

/* 请在这里填写答案 */

void zip( char *p ){
	int sum = 1;
	int len = 0;
	while(	*(p++) != '\0'){
		len++;
	}
	p -= len+1;
	
	for(int i=0;i<=len-1;i++){
		int a = *(p+i);
		for(int j=i+1;j<=len-1;j++){
			
			int b = *(p+j);
			if(a == b){
				sum++;			//若有连续重复，重复的第一个位置记录重复数sum
				*(p+i) = sum + '0';
				if(j == len-1){
					i = len-1;
				}
			}else{
				sum = 1;
				i = j-1;
				break;
			}
		}
	}
	int len1 = len;
	for(int i=0;i<=len-1;i++){
		if(p[i] <= '9' && p[i] >= '2'){
			len1 = len1 - (p[i]-'2');
		}
	}
	char q[len1+1];
	int w = 0;					//记录q下标
	for(int i=0;i<=len;i++){
		if((p[i] >= 'a'&& p[i] <= 'z') || (p[i] >= 'A'&& p[i] <= 'Z') || (p[i] <= '9' && p[i] >= '0')){
			q[w] = p[i];
			if(p[i] <= '9' && p[i] >= '0'){
				w++;
				q[w] = p[i+1];				//遇到数字获取下一位的字母
				i = i + p[i] - '0' - 1 ;				//下标i利用p[i]记录的重复次数跳转到下一个字母
			}
			w++;
			if(w >= len1){
				q[w] = '\0';
				break;
			}
		}
		
	}
	for(int i=0;i<=len;i++){
		p[i] = q[i];
	}
}
